const throttleTimers = {}; // 存储定时器

/**
 * 节流函数（Throttle）
 * @param {Function} callback - 需要执行的回调函数
 * @param {number} interval - 间隔时间（单位：毫秒，默认 500ms）
 * @param {Object} options - 其他配置项
 * @param {boolean} options.leading - 是否立即执行（默认 true）
 * @param {boolean} options.trailing - 是否在最后执行（默认 false）
 * @param {string} timerId - 定时器的唯一标识（默认 'default'）
 */
function throttle(callback, interval = 500, options = {}, timerId = "default") {
  if (typeof callback !== "function") {
    console.error("throttle 需要传入一个函数作为回调");
    return;
  }

  const { leading = true, trailing = false } = options;
  let lastExecuted = throttleTimers[timerId]?.lastExecuted || 0;
  const now = Date.now();

  if (!throttleTimers[timerId]) {
    throttleTimers[timerId] = {};
  }

  if (leading && now - lastExecuted >= interval) {
    // 立即执行
    callback();
    throttleTimers[timerId].lastExecuted = now;
  } else if (trailing) {
    // 清除已有的延迟调用
    clearTimeout(throttleTimers[timerId].timer);
    throttleTimers[timerId].timer = setTimeout(() => {
      callback();
      throttleTimers[timerId].lastExecuted = Date.now();
    }, interval);
  }
}
export default throttle